package com.etoak.service.impl;

import cn.hutool.json.JSONUtil;
import com.etoak.common.constant.CommonConstant;
import com.etoak.common.redis.RedisUtil;
import com.etoak.common.web.context.LoginContext;
import com.etoak.dto.CartDTO;
import com.etoak.service.CartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CartServiceImpl implements CartService {

    @Autowired
    RedisUtil redisUtil;
    @Override
    public void saveOrUpdate(CartDTO cartDTO) {
        redisUtil.hset(getRedisKey(),cartDTO.getDishesId().toString(), JSONUtil.toJsonStr(cartDTO));
    }

    private String getRedisKey() {
        return CommonConstant.REDIS_CART_PREFIX + LoginContext.getUserId();
    }

    @Override
    public List<CartDTO> getList() {
        return redisUtil.hvals(getRedisKey()).stream().map(json->JSONUtil.toBean(json,CartDTO.class)).toList();
    }

    @Override
    public void deleteDishes(String dishesId) {
        redisUtil.hdel(getRedisKey(),dishesId);
    }

    @Override
    public void deleteCart() {
        redisUtil.deleteKey(getRedisKey());
    }
}
